package com.wj.ballcat.demo.model.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.tangzc.mpe.actable.annotation.*;
import com.tangzc.mpe.actable.annotation.constants.MySqlTypeConstant;
import io.swagger.v3.oas.annotations.media.Schema;

import lombok.*;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;

/**
 * @author WJ
 * @author ballcat 2022-10-08 17:08:19
 */
@Data
@Builder
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
/**
 *
  @Table标记的可被识别为需要自动创建表的Entity
  */
@Table()
public class Demo {

	private static final long serialVersionUID = 1L;

	/**
	 * ID
	 */
	@TableId(type = IdType.ASSIGN_ID)
	@Schema(title = "ID")
	// 自动识别id属性名为主键
	// @IsAutoIncrement声明为自增主键，什么都不声明的话，默认为雪花算法的唯一主键（MP的自带功能），推荐默认便于后期的数据分布式存储等处理。
	// @IsAutoIncrement
	// 字段注释、类型、长度。@Column的所有属性均有独立的注解对应，具体请参照后面的注解介绍
	// @Column(comment = "主键", type = MySqlTypeConstant.BIGINT, length = 32)
	private String id;

	/**
	 * 名称
	 */
	@Schema(title = "名称")
	@Builder.Default
	// 索引
	@Index
	// 非空
	@IsNotNull
	@ColumnComment("名字")
	private String name = "hello";

	/**
	 * 类型
	 */
	@Schema(title = "类型")
	private Integer type;

	/**
	 * 日期
	 */
	@TableField(fill = FieldFill.INSERT)
	@Schema(title = "创建日期")
	private LocalDateTime createTime;

	@TableField(fill = FieldFill.INSERT_UPDATE)
	@Schema(title = "修改日期")
	private LocalDateTime updateTime;

	/**
	 * 备注
	 */
	@Schema(title = "备注")
	private String info;


	// 唯一索引
	@Unique
	// 非空
	@IsNotNull
	@ColumnComment("手机号")
	private String phone;


	@TableField(fill = FieldFill.INSERT)
	@Schema(title = "创建人")
	private Integer createBy;

	@TableField(fill = FieldFill.INSERT_UPDATE)
	@Schema(title = "修改人")
	private Integer updateBy;

}
